package com.study.common;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class AutoIdFactory {

	/**
	 * 得到时间
	 * 
	 * @return
	 */
	private String getDate() {
		DateFormat date = new SimpleDateFormat("yyyyMM");
		return date.format(new Date());
	}

	/**
	 * 生成ID
	 * 
	 * @param type
	 *            单号前缀类型 如CGSQ
	 * @param maxid
	 *            数据库获取的最大ID
	 * @return
	 */
	public synchronized String getId(String type, String maxid) {

		if ("".equals(maxid) || maxid == null) {
			// 如果单号不存在,则设置每天的第一个单号
			maxid = getDate() + "001";
		} else {
			// 取单号中间日期部分
			String strdate = maxid.substring(0, 6);
			// 取最后三位的流水号
			String num = maxid.substring(maxid.length() - 3, maxid.length());

			if (Integer.parseInt(num) >= 1 && Integer.parseInt(num) < 999) {
				num = String.valueOf(Integer.parseInt(num) + 1);
			}
			switch (num.length()) {
			case 1:
				num = "00" + num;
				break;
			case 2:
				num = "0" + num;
				break;
			default:
				break;
			}
			maxid = strdate + num;
		}
		System.out.println("得到id：" + type + maxid);
		return type + maxid;
	}
}
